Ders 7 - Role Based Access Control > Stage 2 | |||||
Access Control Flaws ünitesinin LAB: Role Based Access Control(Role Dayalı Erişim Kontrolü) dersinin ikinci alt başlığı olan Stage 2: Add Business Layer Access Control dersinde Stage 1'deki güvenlik açığının kapatılmasından ve bunun üzerine yetki ihlali yapma denemelerinin boşa çıkışından bahsedilecektir.
Dersin HedefiDelete işlevine olan yetkisiz erişimi engellemek için bir düzeltme uygulayın. Düzeltme uygulayabilmek için WebGoat kaynak kodunu değiştirmek zorunda kalacaksınız. Bunu yaptınız mı hemen ardından stage 1'deki yetkisiz erişim teşebbüsünü tekrarlayınız ve DeleteProfile anahtar kelimesinin olması gerektiği gibi yetkisiz personel için artık kullanıma kapalı oluşunu gözlemleyiniz.AçıklamalarBu bölüm WebGoat'un geliştirici versiyonunu kullananlar için işlevseldir. Standard versiyonunu kullanan bizler için işlevsel değildir.Dersin ÇözümüBu dersi WebGoat'un standard versiyonunu kullanan bizler tamamlayamayacağız. Fakat yine de çözümden bahsedelim. Hatırlarsanız Stage 1'de sunucu taraflı değil de istemci taraflı bir erişim kontrolü yer almaktaydı. Yani buton eksiltip arttırma ile erişim kontrolü sağlanmaktaydı. Stage 1'deki yetki ihlalinin önüne geçebilmek için erişim kontrolünün sunucu tarafına taşınması gerekir. Şimdi çözüme geçelim. Bulunmakta olduğunuz dersin kaynak kodundaki//***************CODE HERE************************* //************************************************* kısmına aşağıdaki kod bloğunu yerleştiriniz: //***************CODE HERE************************* if(!isAuthorized(s, getUserId(s), requestedActionName)) { throw new UnauthorizedException(); } //************************************************* Bu kod bloğundaki isAuthorized() fonksiyonu talepte bulunan personelin bulunduğu talebi gerçekleştirme izni var mı yok muyu kontrol eder. getUserId() fonksiyonu personelin(staff'ın) id'sini döndürür. requestedActionName ise talep edilen işlemi(mesela DeleteProfile'ı) tutar. Eğer personelin talep ettiği işleme yetkisi varsa isAuthorized() fonksiyonu 1 sonucunu döndürür. Eğer personelin yetkisi yoksa isAuthorized() fonksiyonu 0 sonucunu döndürür ve if bloğuna böylelikle girilerek bir hata fırlatılmış olur. Bu fonksiyon nereden geldi diye düşünüyorsanız halihazırda WebGoat ile beraber gelen bir fonksiyon olduğunu belirtmiş olayım. Buradan çıkarılacak sonuç şudur: Erişim kontrolünün sunucu taraflı yapılması güvenliği sağlam temele oturtmak demektir. Bu kod bloğunu kaynak koddaki ilgili yere yerleştirdikten sonra Stage 1'deki gibi DeleteProfile ile yetki ihlaline teşebbüs ettiğinizde bu sefer önceki gibi saldırıdan umulan sonuç gerçekleşmeyecektir. Bu başarısız teşebbüsten sonra ders, geliştirici versiyonunu kullananlar için başarıyla tamamlanmış olacaktır. |
|||||
Bu yazı 09.05.2015 tarihinde, saat 16:46:02'de yazılmıştır. 17.05.2015 tarihi ve 14:33:23 saatinde ise güncellenmiştir. | |||||
|
|||||
Yorumlar |
|||||
Henüz yorum girilmemiştir. | |||||
Yorum Ekle | |||||